#ifndef AHT20_H
#define AHT20_H

#include "esp_err.h"

// 统一I2C引脚配置
#define I2C_MASTER_SCL_IO           4
#define I2C_MASTER_SDA_IO           5
#define I2C_MASTER_NUM              I2C_NUM_0
#define I2C_MASTER_FREQ_HZ          100000
#define I2C_MASTER_TX_BUF_DISABLE   0
#define I2C_MASTER_RX_BUF_DISABLE   0

#define AHT20_ADDR_DEFAULT          0x38
#define AHT20_INIT_RETRY_COUNT      3
#define AHT20_READ_RETRY_COUNT      3

// 传感器数据结构体，包含湿度和温度值
typedef struct {
    float humidity;    // 湿度值，单位：%
    float temperature; // 温度值，单位：°C
} aht20_sensor_value_t;

/**
 * @brief 初始化AHT20传感器及I2C总线
 * 
 * @return esp_err_t 成功返回ESP_OK，失败返回相应错误码
 */
esp_err_t aht20_init(void);

/**
 * @brief 读取传感器的湿度和温度值
 * 
 * @param v 指向aht20_sensor_value_t结构体的指针，用于存储读取的数据
 * @return int 成功返回1，失败返回0
 */
int aht20_read(aht20_sensor_value_t *v);

/**
 * @brief 重置AHT20传感器
 * 
 * @return esp_err_t 成功返回ESP_OK，失败返回相应错误码
 */
esp_err_t aht20_reset(void);

/**
 * @brief 获取AHT20传感器状态
 * 
 * @param status 存储状态信息的指针
 * @return esp_err_t 成功返回ESP_OK，失败返回相应错误码
 */
esp_err_t aht20_get_status(uint8_t *status);

#endif // AHT20_H